001 /*
002 * Copyright 2005 Stephen J. McConnell.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
013 * implied.
014 *
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019 package net.dpml.library.info;
020
021 import net.dpml.lang.ValuedEnum;
022
023 /**
024 * Enumeration identifying BUILD, RUNTIME and TEST phases.
025 *
026 * @author <a href="http://www.dpml.net">Digital Product Meta Library</a>
027 * @version 1.1.0
028 */
029 public final class Scope extends ValuedEnum implements Comparable
030 {
031 static final long serialVersionUID = 1L;
032
033 /**
034 * Build scope.
035 */
036 public static final Scope BUILD = new Scope( "build", 0 );
037
038 /**
039 * Runtime scope.
040 */
041 public static final Scope RUNTIME = new Scope( "runtime", 1 );
042
043 /**
044 * Test scope.
045 */
046 public static final Scope TEST = new Scope( "test", 2 );
047
048 /**
049 * Array of scope enumeration values.
050 */
051 private static final Scope[] ENUM_VALUES = new Scope[]{BUILD, RUNTIME, TEST};
052
053 /**
054 * Returns an array of activation enum values.
055 * @return the activation policies array
056 */
057 public static Scope[] values()
058 {
059 return ENUM_VALUES;
060 }
061
062 /**
063 * Internal constructor.
064 * @param label the enumeration label.
065 * @param index the enumeration index.
066 */
067 private Scope( String label, int index )
068 {
069 super( label, index );
070 }
071
072 /**
073 * Return a string representation of the scope.
074 * @return the string value
075 */
076 public String toString()
077 {
078 return getName().toUpperCase();
079 }
080
081 /**
082 * Return a scope value matching the supplied value.
083 * @param value the scope name
084 * @return the scope
085 * @exception IllegalArgumentException if the name if not recognized
086 */
087 public static Scope parse( String value ) throws IllegalArgumentException
088 {
089 if( value.equalsIgnoreCase( "build" ) )
090 {
091 return BUILD;
092 }
093 else if( value.equalsIgnoreCase( "runtime" ) )
094 {
095 return RUNTIME;
096 }
097 else if( value.equalsIgnoreCase( "test" ) )
098 {
099 return TEST;
100 }
101 else
102 {
103 final String error =
104 "Unrecognized scope argument [" + value + "]";
105 throw new IllegalArgumentException( error );
106 }
107 }
108 }
109